﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Sisco.AplicacionEscritorio.Maestro
{
    public partial class Empresa : Form
    {
        public Empresa()
        {
            InitializeComponent();
        }

        private void Empresa_Load(object sender, EventArgs e)
        {
            ListarEmpresa();
        }

        private void ListarEmpresa()
        {
            LogicaNegocio.EmpresaBLL empresaBLL = new LogicaNegocio.EmpresaBLL();
            gridInfoRegistrada.DataSource = empresaBLL.Listar();
            gridInfoRegistrada.ClearSelection();
            gridInfoRegistrada.CurrentCell = null;
        }

        private void LimpiarFormulario()
        {
            txtEmpresa.ResetText();
        }

        private void gridInfoRegistrada_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
        {
            if (gridInfoRegistrada.DataSource != null)
            {
                gridInfoRegistrada.Columns["ID"].Visible = false;
                gridInfoRegistrada.Columns["IDEMPRESAANTIGUO"].Visible = false;
                gridInfoRegistrada.Columns["NOMBREEMPRESA"].HeaderText = "Empresa";
                gridInfoRegistrada.Columns["NOMBREEMPRESA"].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
                gridInfoRegistrada.Columns["ELIMINADO"].Visible = false;
                gridInfoRegistrada.Columns["SUCURSAL"].Visible = false;
            }
        }

        private void btnCerrar_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void gridInfoRegistrada_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.RowIndex >= 0)
            {
                AccesoDatos.EMPRESA empresa = gridInfoRegistrada.Rows[e.RowIndex].DataBoundItem as AccesoDatos.EMPRESA;
                txtEmpresa.Text = empresa.NOMBREEMPRESA.Trim();
            }
        }

        private void btnRegistrar_Click(object sender, EventArgs e)
        {
            if (!string.IsNullOrWhiteSpace(txtEmpresa.Text))
            {
                LogicaNegocio.EmpresaBLL empresaBLL = new LogicaNegocio.EmpresaBLL();
                List<AccesoDatos.EMPRESA> lista = empresaBLL.Listar();
                AccesoDatos.EMPRESA empresa = lista.Find(x => x.NOMBREEMPRESA.Equals(txtEmpresa.Text.Trim(), StringComparison.CurrentCultureIgnoreCase) && x.ELIMINADO == 0);

                if (empresa == null)
                {
                    AccesoDatos.EMPRESA nuevoEmpresa = new AccesoDatos.EMPRESA()
                    {
                        NOMBREEMPRESA = txtEmpresa.Text.Trim(),
                        ELIMINADO = 0
                    };

                    empresaBLL.Registrar(nuevoEmpresa);
                    ListarEmpresa();
                    LimpiarFormulario();
                }
                else
                {
                    MessageBox.Show("El valor ingresado ya se encuentra en la lista", "Sisco", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
                }
            }
            else
            {
                MessageBox.Show("Ingrese campo 'Empresa'", "Sisco", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
            }
        }

        private void btnModificar_Click(object sender, EventArgs e)
        {
            if (gridInfoRegistrada.SelectedRows.Count > 0)
            {
                if (!string.IsNullOrWhiteSpace(txtEmpresa.Text))
                {
                    AccesoDatos.EMPRESA selectedEmpresa = gridInfoRegistrada.SelectedRows[0].DataBoundItem as AccesoDatos.EMPRESA;
                    LogicaNegocio.EmpresaBLL empresaBLL = new LogicaNegocio.EmpresaBLL();

                    if (selectedEmpresa.NOMBREEMPRESA.Equals(txtEmpresa.Text.Trim(), StringComparison.CurrentCultureIgnoreCase))
                    {
                        empresaBLL.Actualizar(selectedEmpresa, txtEmpresa.Text.Trim());
                        ListarEmpresa();
                        LimpiarFormulario();
                    }
                    else
                    {
                        List<AccesoDatos.EMPRESA> lista = empresaBLL.Listar();
                        AccesoDatos.EMPRESA tipo = lista.Find(x => x.NOMBREEMPRESA.Equals(txtEmpresa.Text.Trim(), StringComparison.CurrentCultureIgnoreCase) && x.ELIMINADO == 0);

                        if (tipo == null)
                        {
                            empresaBLL.Actualizar(selectedEmpresa, txtEmpresa.Text.Trim());
                            ListarEmpresa();
                            LimpiarFormulario();
                        }
                        else
                        {
                            MessageBox.Show("El valor ingresado ya se encuentra en la lista", "Sisco", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
                        }
                    }
                }
                else
                {
                    MessageBox.Show("Ingrese campo 'Empresa'", "Sisco", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
                }
            }
        }

        private void btnEliminar_Click(object sender, EventArgs e)
        {
            if (gridInfoRegistrada.SelectedRows.Count > 0)
            {
                DialogResult dr = MessageBox.Show("¿Confirma eliminar la fila seleccionada?", "Sisco", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1);

                if (dr == DialogResult.Yes)
                {
                    AccesoDatos.EMPRESA selectedEmpresa = gridInfoRegistrada.SelectedRows[0].DataBoundItem as AccesoDatos.EMPRESA;
                    LogicaNegocio.EmpresaBLL empresaBLL = new LogicaNegocio.EmpresaBLL();

                    empresaBLL.Eliminar(selectedEmpresa);
                    ListarEmpresa();
                    LimpiarFormulario();
                }
            }
        }


    }
}
